#include <stdlib.h>
#include <string.h>
#include "genericdao.h"
#include "pista.h"

static int64_t get_id(pista *this);
static void set_id(pista *this, int64_t novo);
static char* get_nome(pista *this);
static void set_nome(pista *this, char* novo);
static char* get_imagem(pista *this);
static void set_imagem(pista *this, char* novo);
static int32_t get_num_setores(pista *this);
static void set_num_setores(pista *this, int32_t novo);
static char* get_posicao(pista *this);
static void set_posicao(pista *this, char* novo);

static pista* create()
{
  pista *ptr = malloc(sizeof(pista));
  if(!ptr) return 0;
  memset(ptr,0,sizeof(pista));
  ptr->id=(GenericVar)GVAR(T_INT64);
  ptr->nome=(GenericVar)GVAR(T_PCHAR);
  ptr->imagem=(GenericVar)GVAR(T_PCHAR);
  ptr->num_setores=(GenericVar)GVAR(T_INT32);
  ptr->posicao=(GenericVar)GVAR(T_PCHAR);
  return ptr;
}

static int64_t get_id(pista *this)
{
  return this->id.INT64VAL;
}

static void set_id(pista *this, int64_t novo)
{
  setVar(&this->id,novo);
}

static char* get_nome(pista *this)
{
  return this->nome.PCHARVAL;
}

static void set_nome(pista *this, char* novo)
{
  setVar(&this->nome,novo);
}

static char* get_imagem(pista *this)
{
  return this->imagem.PCHARVAL;
}

static void set_imagem(pista *this, char* novo)
{
  setVar(&this->imagem,novo);
}

static int32_t get_num_setores(pista *this)
{
  return this->num_setores.INT32VAL;
}

static void set_num_setores(pista *this, int32_t novo)
{
  setVar(&this->num_setores,novo);
}

static char* get_posicao(pista *this)
{
  return this->posicao.PCHARVAL;
}

static void set_posicao(pista *this, char* novo)
{
  setVar(&this->posicao,novo);
}


static FieldEntry *getFields()
{
  static pista v;
  static FieldEntry fe[] = {
    {"id", ((long)&v.id - (long)&v)},
    {"nome", ((long)&v.nome - (long)&v)},
    {"imagem", ((long)&v.imagem - (long)&v)},
    {"num_setores", ((long)&v.num_setores - (long)&v)},
    {"posicao", ((long)&v.posicao - (long)&v)},
    {0, 0}
  };
  return fe;
}

pistaInterface pistaI = {
create,
getFields,
get_id,
set_id,
get_nome,
set_nome,
get_imagem,
set_imagem,
get_num_setores,
set_num_setores,
get_posicao,
set_posicao
};
